package br.com.fox.iebav.session;

import java.io.Serializable;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.fox.iebav.controller.command.SalvarFamilia;
import br.com.fox.iebav.controller.command.SalvarNoticia;
import br.com.fox.iebav.entity.Familias;
import br.com.fox.iebav.entity.Noticias;
import br.com.fox.iebav.session.abstractsession.AbstractSession;

@Named("noticiaBeanSession")
@SessionScoped
public class NoticiaBeanSession extends AbstractSession implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
//	ATRIBUTOS
	private List<Noticias> noticiasList;
	private Noticias noticiasSelecionada;
	private @Inject AutenticacaoBeanSession autenticacaoBeanSession;
	
//	CONTROLLER COMMAND
	private @EJB SalvarNoticia salvarNoticia;
	private Map<String, Object> resultMap;
	
	
	@PostConstruct
	public void init()
	{
		setNoticiasSelecionada(new Noticias());
		carregarNoticias();
		redirecionarURL("noticias.java");
	}		
	
	public void carregarNoticias()
	{
		setNoticiasList( salvarNoticia.getNoticiasdao().findAll() );
	}
	
	public void abrirNoticiaSelecionado()
	{
		redirecionarURL("noticiaPersistencia.java");
	}
	
	public void novaNoticia()
	{
		setNoticiasSelecionada(new Noticias());
		redirecionarURL("noticiaPersistencia.java");
	}
		
	public void salvarNoticia()
	{
		getNoticiasSelecionada().setUsuario( autenticacaoBeanSession.getUsuarioLogado() );
		resultMap = salvarNoticia.execute(getNoticiasSelecionada());
		if( ( (Boolean) resultMap.get("resultado") ) )
			facesMensagens(FacesMessage.SEVERITY_INFO,((String)resultMap.get("mensagem")),"");
		else
			facesMensagens(FacesMessage.SEVERITY_ERROR,((String)resultMap.get("mensagem")),"");
		carregarNoticias();
	}

	public List<Noticias> getNoticiasList() {
		return noticiasList;
	}

	public void setNoticiasList(List<Noticias> noticiasList) {
		this.noticiasList = noticiasList;
	}

	public Noticias getNoticiasSelecionada() {
		return noticiasSelecionada;
	}

	public void setNoticiasSelecionada(Noticias noticiasSelecionada) {
		this.noticiasSelecionada = noticiasSelecionada;
	}
}
